﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SushiSOAPServices.Persistencia;
using SushiSOAPServices.Dominio;
using SushiSOAPServices.Exceptions;

namespace SushiSOAPServices
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Seguridad" en el código, en svc y en el archivo de configuración a la vez.
    public class Seguridad : ISeguridad
    {

        private UsuarioDAO usuarioDAO = null;
        private UsuarioDAO UsuarioDAO
        {
            get
            {
                if (usuarioDAO == null)
                    usuarioDAO = new UsuarioDAO();
                return usuarioDAO;
            }
        }

        public Usuario obtenerUsuarioPorUsername(string username)
        {
            return UsuarioDAO.obtenerUsuarioPorUsername(username);
        }

        public Usuario crearUsuario(Usuario usuarioACrear)
        {
            return UsuarioDAO.Crear(usuarioACrear);

        }


        public Usuario autenticarUsuario(string uLogin, string password)
        {
            Usuario usuario = UsuarioDAO.ObtenerUsuarioPorUsernameAndContrasena(uLogin, password);

            if (usuario == null)
            {
                SeguridadException ex = new SeguridadException { Message = "El usuario y/o contraseña son incorrectos." };
                throw new FaultException<SeguridadException>(ex, ex.Message);
            }

            return usuario;
        }
    }
}
